如何通过Python3语言编写UDTF 您所在的位置:网站首页 odps sql 递归查询 如何通过Python3语言编写UDTF

如何通过Python3语言编写UDTF

#如何通过Python3语言编写UDTF| 来源: 网络整理| 查看: 265

导入模块:必选。

至少要包含from odps.udf import annotate和from odps.udf import BaseUDTF。from odps.udf import annotate用于导入函数签名模块,MaxCompute才可以识别后续代码中定义的函数签名。from odps.udf import BaseUDTF为Python UDTF的基类,您需要通过此类在派生类中实现process或close等方法。

当UDTF代码中需要引用文件资源或表资源时,需要包含from odps.distcache import get_cache_file(文件资源)或from odps.distcache import get_cache_table(表资源)。

函数签名:可选。

格式为@annotate(),signature用于定义函数的输入参数和返回值的数据类型。如果不指定函数签名,在SQL中调用UDTF时,可以匹配任意类型的输入参数,但返回值类型无法推导,所有输出参数都将会是STRING类型。更多函数签名信息,请参见函数签名及数据类型。

自定义Python类(派生类):必选。

UDTF代码的组织单位,定义了实现业务需求的变量及方法。您还可以在代码中引用MaxCompute内置的第三方库或引用文件、表资源。更多信息,请参见第三方库或引用资源。

实现Python类的方法:必选。

Python类实现包含如下4个方法,您可以根据实际需要进行选择。

方法定义 描述 BaseUDTF.init() 初始化方法。派生类如果需要实现此方法,必须在一开始调用基类的初始化方法super(BaseUDTF, self).init()。init方法在整个UDTF生命周期中只会被调用一次,即在处理第一条记录之前。当UDTF需要保存内部状态时,可以通过此方法初始化所有状态。 BaseUDTF.process([args, ...]) SQL中每一条记录都会对应调用一次process,process的参数为SQL语句中指定的UDTF输入参数。 BaseUDTF.forward([args, ...]) UDTF的输出方法。此方法由用户代码调用。每调用一次forward,就会输出一条记录。forward的参数为SQL语句中指定的UDTF的输出参数。

如果Python代码中未指定函数签名,在调用forward方法时,必须将所有输出值转换为STRING类型。

BaseUDTF.close() UDTF的结束方法。只会被调用一次,即在处理完最后一条记录之后被调用。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有